package com.huahang.fashionpress.service.impl;

import com.huahang.fashionpress.mapper.ImgMapper;
import com.huahang.fashionpress.mapper.ProductMapper;
import com.huahang.fashionpress.model.Img;
import com.huahang.fashionpress.model.Product;
import com.huahang.fashionpress.service.IProductService;
import com.huahang.fashionpress.vo.ImgVO;
import com.huahang.fashionpress.vo.ProductClientVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * 商品查询service
 * @author : 王翰聪
 * @since : 2019/08/24
 * @version : 1.0
 */
@Service
public class IProductServiceImpl implements IProductService {
    @Autowired
    private ImgMapper imgMapper;
    @Autowired
    private ProductMapper productMapper;

    /**
     * 查询所有商品方法(分页)
     *
     * @param currIndex 当前页
     * @param pageSize  页大小
     * @return 当前页商品列表
     */
    @Override
    public List<ProductClientVO> getAllProduct(int currIndex, int pageSize) {
        List<Product> productList = productMapper.selectProductList(currIndex, pageSize);
        List<ProductClientVO> productClientVOList = new ArrayList<ProductClientVO>();
        //循环列表封装
        for (Product product : productList) {
            ProductClientVO productClientVO = new ProductClientVO();
            productClientVO.setCategoryId(product.getCategoryId());
            productClientVO.setProductPrice(product.getProductPrice());
            productClientVO.setProductName(product.getProductName());
            productClientVO.setProductID(product.getProductId());
            //查询该商品status为0图片
            List<Img> imgList = imgMapper.getSingleProductImgList(product.getProductId(), 0);
            ImgVO imgVO = new ImgVO();

            //判断是否拿到了图片
            if (imgList.isEmpty()) {
                imgVO.setImgName("p1.jpg");
            } else {
                imgVO.setImgName(imgList.get(0).getImgName());
            }

            //封装img图片
            productClientVO.setImg(imgVO);
            //添加至商品列表
            productClientVOList.add(productClientVO);
        }

        return productClientVOList;
    }

    @Override
    public List<ProductClientVO> getKindOfProduct(Integer categoryId, BigDecimal productPrice, int currIndex, int pageSize) {
        List<Product> productList = productMapper.selectProductByCategoryIDAndPrice(categoryId, productPrice, currIndex, pageSize);
        List<ProductClientVO> productClientVOList = new ArrayList<ProductClientVO>();

        for (Product product : productList) {
            ProductClientVO productClientVO = new ProductClientVO();
            productClientVO.setCategoryId(product.getCategoryId());
            productClientVO.setProductPrice(product.getProductPrice());
            productClientVO.setProductName(product.getProductName());
            productClientVO.setProductID(product.getProductId());
            //查询该商品status为0图片
            List<Img> imgList = imgMapper.getSingleProductImgList(product.getProductId(), 0);
            ImgVO imgVO = new ImgVO();
            imgVO.setImgName(imgList.get(0).getImgName());
            //封装img图片
            productClientVO.setImg(imgVO);
            //添加至商品列表
            productClientVOList.add(productClientVO);
        }
        return productClientVOList;
    }

    /**
     * 查询该种类商品方法
     *
     * @param categoryId 商品类型id
     * @param currIndex  当前页
     * @param pageSize   页面大小
     * @return 分页该种类商品列表
     */
    @Override
    public List<ProductClientVO> getKindOfProduct(Integer categoryId, int currIndex, int pageSize) {
        List<Product> productList = productMapper.selectProductByCategoryID(categoryId, currIndex, pageSize);
        List<ProductClientVO> productClientVOList = new ArrayList<ProductClientVO>();

        for (Product product : productList) {
            ProductClientVO productClientVO = new ProductClientVO();
            productClientVO.setCategoryId(product.getCategoryId());
            productClientVO.setProductPrice(product.getProductPrice());
            productClientVO.setProductName(product.getProductName());
            productClientVO.setProductID(product.getProductId());
            //查询该商品status为0图片
            List<Img> imgList = imgMapper.getSingleProductImgList(product.getProductId(), 0);
            ImgVO imgVO = new ImgVO();
            if(imgList.isEmpty()){
                imgVO.setImgName("p1.jpg");
            }
            else{
                imgVO.setImgName(imgList.get(0).getImgName());
            }
            //封装img图片
            productClientVO.setImg(imgVO);
            //添加至商品列表
            productClientVOList.add(productClientVO);
        }
        return productClientVOList;
    }

    /**
     * 查询列表里所有商品方法
     *
     * @param productIDList 商品id列表
     * @param currIndex
     * @param pageSize
     * @return 查询的商品列表
     */
    @Override
    public List<ProductClientVO> getSingleProduct(List<String> productIDList, int currIndex, int pageSize) {
        //创建返回列表
        List<ProductClientVO> productClientVOList = new ArrayList<ProductClientVO>();
        //循环查找每一个商品
        for (String productId : productIDList) {
            Product product = productMapper.selectById(productId);
            ProductClientVO productClientVO = new ProductClientVO();
            //封装商品信息
            productClientVO.setProductID(product.getProductId());
            productClientVO.setProductName(product.getProductName());
            productClientVO.setProductPrice(product.getProductPrice());
            productClientVO.setCategoryId(product.getCategoryId());
            //查询该商品status为0图片信息
            List<Img> imgList = imgMapper.getSingleProductImgList(productId, 0);
            ImgVO imgVO = new ImgVO();
            imgVO.setImgName(imgList.get(0).getImgName());
            //封装图片信息
            productClientVO.setImg(imgVO);
            //添加该商品至列表
            productClientVOList.add(productClientVO);
        }

        //分页并返回
        return productClientVOList.subList((currIndex - 1) * pageSize, currIndex * pageSize);
    }
}